package com.clone.demo1;

public class Person implements Cloneable{
    /** 姓名 **/
    private String name;
    
    /** 电子邮件 **/
    private Email email;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Email getEmail() {
        return email;
    }

    public void setEmail(Email email) {
        this.email = email;
    }
    
    public Person(String name,Email email){
        this.name  = name;
        this.email = email;
    }
    
    public Person(String name){
        this.name = name;
    }

    protected Person clone() {
        Person person = null;
        try {
            person = (Person) super.clone();
            //在clone()方法里面新建一个对象，然后张三引用该对象即可，
            //若我们系统中存在大量的对象是通过拷贝生成的，如果我们每一个类都写一个clone()方法，
            //并将还需要进行深拷贝，新建大量的对象，这个工程是非常大的
            person.setEmail(new Email(person.getEmail().getTitle(),person.getEmail().getContent()));
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return person;
    }
}
